export default {
    // 不要在mutations中使用异步操作（所有函数都应是同步的），否则会造成：界面的值虽然已经修改了，但是实际上state中管理的状态没有改变
    // 管理状态
    [INCREMENT](state) {
        state.count++
    },
    decrement(state) {
        state.count--
    },
    // mutations的payload，也就是携带参数
    incrementCount(state, num) {
        state.count += num
    },
    addStudent(state, stu) {
        state.students.push(stu);
    },
    updateInfo(state) {
        state.info.age = 2 // 修改后可以响应式显示
        // 视频中说：修改后不可以响应式，但实际上已经给该状态增加了address属性和值
        // 但经过实际测试，使用state.info["address"] = "Qinghuangdao" 可以做到响应式
        // 猜测，可能是由于vue版本问题，视频是2018年的，当时的vue版本可能确实存在该问题，后续版本应该做了优化
        state.info["address"] = "Qinghuangdao"
        Vue.set(state.info, "birth", "1999-09-09") // 视频中，该方式可以做到响应式
        // 视频中说：修改后不可以响应式，但实际上已经给该状态删除了name属性和值
        // 但经过实际测试，使用delete state.info.name 可以做到响应式
        // 猜测，可能是由于vue版本问题，视频是2018年的，当时的vue版本可能确实存在该问题，后续版本应该做了优化
        delete state.info.name
        Vue.delete(state.info, 'sex') // 视频中，该方式可以做到响应式
        setTimeout(() => {
            state.info.height = 173 // 在mutations中使用异步，会导致问题：界面的值虽然已经修改了，但是实际上state中管理的状态没有改变
        }, 3000)
        state.info.level = 99
    }
}